Field of the Invention
The present invention relates to the field of distributed computing and in particular, to apparatus, systems, and methods to facilitate cloud agnostic modeling and deployment of cloud-based applications including multi-tier applications.
Description of Related Art
The performance of computing applications may often be increased by distributing the computational workload across a networked cluster of computers. A physical networked cluster of computers with attendant software facilitating virtualization is often referred to as a “cloud” or “cloud infrastructure” or simply an infrastructure.
Clouds may be public and/or private. For example, in publicly available clouds or “public clouds”, these resources can be accessed programmatically (e.g. using Application Programming Interfaces (APIs)) over the Internet and may be made available as virtual machines (VMs) on a pay-per-use basis to customers. On the other hand, organizations may have private clouds for use by employees or customers within an enterprise's data center and/or may use a hybrid cloud, which may be a combination of public-private clouds to deploy and run applications.
However, in a multi-cloud, and/or hybrid cloud environment, each cloud may have and/or use proprietary APIs. For example, clouds may use proprietary APIs for specification and/or configuration of VMs, storage, network security, etc.
Conventionally, developing even simple cloud applications based on off-the-shelf services may require extensive cloud-integration prior to cloud deployment. As an example, the cloud-integration tasks for services on a cloud may include: downloading service binary packages, extracting and installing configuration scripts such as initialization, start and stop scripts, etc. for the service. Moreover, in addition to the tasks associated with the installation and configuration of services, end users typically expend additional time and effort for the installation of application data and binaries.
The resource-intensive process for migrating applications between clouds limits user-flexibility and creates de facto “cloud lock-in”. As a consequence of cloud lock-in users cannot easily deploy applications across clouds. For example, in conventional systems, in addition to the effort and resources invested in developing applications for one cloud, significant effort may be needed to move those applications from one cloud to another. The overhead and resource commitments to develop, deploy and/or migrate cloud-based applications may discourage users from availing of new capabilities, features, lower rates, better performance, etc. that may be available at a given time. In addition, the availability of user applications may be severely compromised or constrained if the cloud provider that the user is locked-in to encounters technical problems or goes out of business.
Therefore, there is a need for systems, methods and apparatus to facilitate the migration and deployment of distributed applications including cloud-based applications across clouds.